<?php
/**
 * Error
 *
 * Класс Error обрабатывает данные, связанные с ошибками
 *
 * @author Егоров Александр <slamer86@gmail.com>
 * @version 1.1
 */
class Error extends ActiveRecord {
	protected static $_tableName = 'error';
	protected static $_pkName = 'ID_error';
	
	protected $arrSettings = array(
		'created_at' => true,  // в БД храним время создания
		'author' => true,  // в БД храним автора
	);	
	
	public function __construct($arrInitialFields = null, $arrSettings = array()) {
		parent::__construct($arrInitialFields, $arrSettings);
		if ($this->id && is_string($this->getField('error_text'))) {
			if (substr($this->getField('error_text'), 0, 10) == 'YXJyYXkgKA') {
				$this->setField('error_text', Service_Function::unserialize($this->getField('error_text')));
			}
		}
		$this->noAbsoluteEscape = true;
	}
	
	protected function beforeSave() {
		parent::beforeSave();
		$this->setField('error_url', substr(Service_Function::getValue('', $_SERVER, 'REQUEST_URI'),0 , 150));
		$this->setField('error_name', Service_Escape::absolutelyEscapeString($this->getField('error_name')));
		$this->setField('ip', User_Session::getIP());
		$this->setField('user_agent', Service_Escape::absolutelyEscapeString(User_Session::getUserAgent()));
		if (isset($_SERVER['HTTP_REFERER'])) $this->setField('referer_url', $_SERVER['HTTP_REFERER']);
		if (is_array($this->getField('error_text'))){
			$this->setField('error_text', Service_Function::serialize($this->getField('error_text')));
		}
	}
	

	/**
	 * Сохраняем отладочные данные
	 *
	 * @param string $errorName - Тип отладочных данных
	 * @param mixed $errorText - Отладочные данные
	 */
	public static function saveError($errorName, $errorText) {
		$objError = new Error();
		$objError->setFields(array('error_name' => $errorName, 'error_text' => $errorText));
		$objError->save();
	}
}
?>